package com.tourism.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tourism.domain.dto.user.AssignRoleDTO;
import com.tourism.domain.dto.user.UserPasswordDTO;
import com.tourism.domain.dto.user.UserProfileDTO;
import com.tourism.domain.dto.user.UserQueryDTO;
import com.tourism.domain.entity.User;


/**
 * 用户服务接口
 *
 * @author lucky
 */
public interface UserService extends IService<User> {

    /**
     * 分页查询用户列表
     *
     * @param pIndex       页码
     * @param pSize        每页数量
     * @param userQueryDTO 查询参数
     * @return 用户分页信息
     */
    Page<User> getPage(Integer pIndex, Integer pSize, UserQueryDTO userQueryDTO);

    /**
     * 根据ID查询用户信息
     *
     * @param id 用户ID
     * @return 用户信息
     */
    User getById(Long id);

    /**
     * 分配用户角色
     *
     * @param assignRoleDTO 分配角色参数
     * @return 是否分配成功
     */
    Boolean assignRole(AssignRoleDTO assignRoleDTO);

    /**
     * 更新用户信息
     *
     * @param userProfileDTO 用户信息
     * @return 是否更新成功
     */
    Boolean updateProfile(UserProfileDTO userProfileDTO);

    /**
     * 更新用户密码
     *
     * @param userPasswordDTO 用户密码参数
     * @return 是否更新成功
     */
    Boolean updatePassword(UserPasswordDTO userPasswordDTO);
}
